<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
    <title>Estilo de Codifica&ccedil;&atilde;o - Zend Framework Manual</title>

    <link href="../css/shCore.css" rel="stylesheet" type="text/css" />
    <link href="../css/shThemeDefault.css" rel="stylesheet" type="text/css" />
    <link href="../css/styles.css" media="all" rel="stylesheet" type="text/css" />
</head>
<body>
<h1>Zend Framework</h1>
<h2>Programmer's Reference Guide</h2>
<ul>
    <li><a href="../en/coding-standard.coding-style.html">Inglês (English)</a></li>
    <li><a href="../pt-br/coding-standard.coding-style.html">Português Brasileiro (Brazilian Portuguese)</a></li>
</ul>
<table width="100%">
    <tr valign="top">
        <td width="85%">
            <table width="100%">
                <tr>
                    <td width="25%" style="text-align: left;">
                    <a href="coding-standard.naming-conventions.html">Conven&ccedil;&otilde;es de Nomenclatura</a>
                    </td>

                    <td width="50%" style="text-align: center;">
                        <div class="up"><span class="up"><a href="coding-standard.html">Padr&atilde;o de Codifica&ccedil;&atilde;o do Zend Framework para PHP</a></span><br />
                        <span class="home"><a href="manual.html">Guia de Refer&ecirc;ncia do Programador</a></span></div>
                    </td>

                    <td width="25%" style="text-align: right;">
                        <div class="next" style="text-align: right; float: right;"><a href="doc-standard.html">Norma sobre a documenta&ccedil;&atilde;o do Zend Framework</a></div>
                    </td>
                </tr>
            </table>
<hr />
<div id="coding-standard.coding-style" class="section"><div class="info"><h1 class="title">Estilo de Codificação</h1></div>
        

        <div class="section" id="coding-standard.coding-style.php-code-demarcation"><div class="info"><h1 class="title">Demarcação de código PHP</h1></div>
            

            <p class="para">
                Código <acronym class="acronym">PHP</acronym> deve sempre ser delimitado pelas tags na forma
                completa, padrão do <acronym class="acronym">PHP</acronym>:
            </p>

            <pre class="programlisting brush: php">
&lt;?php

?&gt;
</pre>


            <p class="para">
                Tags reduzidas nunca não permitidas. Para arquivos que contenham somente código
                <acronym class="acronym">PHP</acronym>, a tag de fechamento deve sempre ser omitida (veja <a href="coding-standard.php-file-formatting.html#coding-standard.php-file-formatting.general" class="link">a seção Geral</a>).
            </p>
        </div>

        <div class="section" id="coding-standard.coding-style.strings"><div class="info"><h1 class="title">Strings</h1></div>
            

            <div class="section" id="coding-standard.coding-style.strings.literals"><div class="info"><h1 class="title">Strings literais</h1></div>
                

                <p class="para">
                    Quando uma string é literal (não contém substituição de variáveis), o apóstrofo
                    ou &quot;aspa simples&quot; deve sempre ser utilizado para demarcar a string:
                </p>

                <pre class="programlisting brush: php">
$a = &#039;Example String&#039;;
</pre>

            </div>

            <div class="section" id="coding-standard.coding-style.strings.literals-containing-apostrophes"><div class="info"><h1 class="title">Strings literais contendo apóstrofos</h1></div>
                

                <p class="para">
                    Quando uma string literal em si contém apóstrofos, é permitido demarcar a string
                    com aspas ou &quot;aspas duplas&quot;. Isto é especialmente útil para sentenças
                    <b><tt>SQL</tt></b>:
                </p>

                <pre class="programlisting brush: php">
$sql = &quot;SELECT `id`, `name` from `people` &quot;
     . &quot;WHERE `name`=&#039;Fred&#039; OR `name`=&#039;Susan&#039;&quot;;
</pre>


                <p class="para">
                    Esta sintaxe é preferível a escapar os apóstrofos uma vez que é muito mais
                    legível.
                </p>
            </div>

            <div class="section" id="coding-standard.coding-style.strings.variable-substitution"><div class="info"><h1 class="title">Substituição de variáveis</h1></div>
                

                <p class="para">
                    A substituição de variáveis é permitida utilizando qualquer uma destas formas:
                </p>

                <pre class="programlisting brush: php">
$greeting = &quot;Hello $name, welcome back!&quot;;

$greeting = &quot;Hello {$name}, welcome back!&quot;;
</pre>


                <p class="para">
                    Por consistência, esta forma não é permitida:
                </p>

                <pre class="programlisting brush: php">
$greeting = &quot;Hello ${name}, welcome back!&quot;;
</pre>

            </div>

            <div class="section" id="coding-standard.coding-style.strings.string-concatenation"><div class="info"><h1 class="title">Concatenação de strings</h1></div>
                

                <p class="para">
                    Strings devem ser concatenadas utilizando o operador &quot;.&quot;. Um espaço deve sempre
                    ser adicionado antes e depois do operador &quot;.&quot; para melhorar a legibilidade:
                </p>

                <pre class="programlisting brush: php">
$company = &#039;Zend&#039; . &#039; &#039; . &#039;Technologies&#039;;
</pre>


                <p class="para">
                    Ao concatenar strings com o operador &quot;.&quot; encoraja-se quebrar a expressão em
                    múltiplas linhas para facilitar a leitura. Nestes casos, cada linha sucessiva
                    deve ser indentada com espaços em branco de forma que o operador &quot;.&quot; fique
                    alinhado com o operador &quot;=&quot;:
                </p>

                <pre class="programlisting brush: php">
$sql = &quot;SELECT `id`, `name` FROM `people` &quot;
     . &quot;WHERE `name` = &#039;Susan&#039; &quot;
     . &quot;ORDER BY `name` ASC &quot;;
</pre>

            </div>
        </div>

        <div class="section" id="coding-standard.coding-style.arrays"><div class="info"><h1 class="title">Arrays</h1></div>
            

            <div class="section" id="coding-standard.coding-style.arrays.numerically-indexed"><div class="info"><h1 class="title">Arrays numericamente indexados</h1></div>
                

                <p class="para">Números negativos não são permitidos como índices.</p>

                <p class="para">
                    Um array indexado deve iniciar com um número não-negativo. Entretanto, índices
                    iniciados em números diferentes de 0 são desencorajados.
                </p>

                <p class="para">
                    Ao declarar arrays indexados com a função <span class="type">Array</span>, um espaço deve ser
                    adicionado após cada vírgula delimitadora para aumentar a legibilidade:
                </p>

                <pre class="programlisting brush: php">
$sampleArray = array(1, 2, 3, &#039;Zend&#039;, &#039;Studio&#039;);
</pre>


                <p class="para">
                    É permitido declarar arrays indexados em várias linhas utilizando o construtor
                    &quot;array&quot;. Neste caso, cada linha sucessiva deve ser indentada com espaços de
                    forma que o começo de cada linha fique alinhado:
                </p>

                <pre class="programlisting brush: php">
$sampleArray = array(1, 2, 3, &#039;Zend&#039;, &#039;Studio&#039;,
                     $a, $b, $c,
                     56.44, $d, 500);
</pre>


                <p class="para">
                    Alternativamente, o item inicial do array pode começar na linha seguinte. Neste
                    caso, ele deve ser indentado em um nível a mais que a linha que contém a
                    declaração do array e todas as linhas sucessivas devem ter a mesma indentação. O
                    parêntese de fechamento deve estar em uma linha a parte no mesmo nível de
                    indentação da linha que contém a declaração do array:
                </p>

                <pre class="programlisting brush: php">
$sampleArray = array(
    1, 2, 3, &#039;Zend&#039;, &#039;Studio&#039;,
    $a, $b, $c,
    56.44, $d, 500,
);
</pre>


                <p class="para">
                    Ao usar esta última declaração, encorajamos utilizar uma vírgula após o último
                    item do array. Isto minimiza o impacto de adicionar novos itens em linhas
                    sucessivas e ajuda a garantir que nenhum erro ocorra devido à ausência de uma
                    vírgula.
                </p>
            </div>

            <div class="section" id="coding-standard.coding-style.arrays.associative"><div class="info"><h1 class="title">Arrays associativos</h1></div>
                

                <p class="para">
                    Ao declarar arrays associativos com o construtor <span class="type">Array</span>, encoraja-se
                    quebrar a expressão em várias linhas. Neste caso, cada linha sucessiva deve ser
                    indentada com espaços em branco de forma que as chaves e os valores fiquem
                    alinhados:
                </p>

                <pre class="programlisting brush: php">
$sampleArray = array(&#039;firstKey&#039;  =&gt; &#039;firstValue&#039;,
                     &#039;secondKey&#039; =&gt; &#039;secondValue&#039;);
</pre>


                <p class="para">
                    Alternativamente, o item inicial do array pode começar na linha seguinte. Neste
                    caso, ele deve ser indentado a um nível a mais que a linha contendo a declaração
                    do array e todas as linhas sucessivas devem ter a mesma indentação. O parêntese
                    de fechamento deve estar em uma linha própria, no mesmo nível de indentação da
                    linha que contém a declaração do array. Para legibilidade, os vários operadores
                    de atribuição &quot;=&gt;&quot; devem ser espaçados de forma a ficarem alinhados.
                </p>

                <pre class="programlisting brush: php">
$sampleArray = array(
    &#039;firstKey&#039;  =&gt; &#039;firstValue&#039;,
    &#039;secondKey&#039; =&gt; &#039;secondValue&#039;,
);
</pre>


                <p class="para">
                    Ao utilizar esta última declaração, encorajamos utilizar uma vírgula após o
                    último item do array; isto minimiza o impacto de adicionar novos itens em linhas
                    sucessivas e ajuda a garantir que nenhum erro ocorra devido à ausência de uma
                    vírgula.
                </p>
            </div>
        </div>

        <div class="section" id="coding-standard.coding-style.classes"><div class="info"><h1 class="title">Classes</h1></div>
            

            <div class="section" id="coding-standard.coding-style.classes.declaration"><div class="info"><h1 class="title">Declaração de classe</h1></div>
                

                <p class="para">
                    Classes devem ser nomeadas de acordo com a convenção de nomenclatura do Zend
                    Framework.
                </p>

                <p class="para">
                    A chave deve ser sempre escrita na linha abaixo do nome da classe.
                </p>

                <p class="para">
                    Toda classe deve ter um bloco de documentação em conformidade ao padrão do
                    PHPDocumentor.
                </p>

                <p class="para">
                    Todo código em uma classe deve ser indentado com quatro espaços.
                </p>

                <p class="para">
                    Apenas uma única classe é permitida em cada arquivo <acronym class="acronym">PHP</acronym>.
                </p>

                <p class="para">
                    A inserção de código adicional em arquivos de classe é permitida, mas
                    desencorajada. Em tais arquivos, duas linhas em branco devem separar a classe de
                    qualquer código <acronym class="acronym">PHP</acronym> no arquivo.
                </p>

                <p class="para">
                    A seguir, um exemplo de declaração de classe aceitável:
                </p>

                <pre class="programlisting brush: php">
/**
 * Bloco de documentação aqui.
 */
class SampleClass
{
    // todo conteúdo de classe
    // deve ser indentado quatro espaços
}
</pre>


                <p class="para">
                    Classes que estendem outras classes ou que implementam interfaces devem declarar
                    suas dependências na mesma linha, quando possível.
                </p>

                <pre class="programlisting brush: php">
class SampleClass extends FooAbstract implements BarInterface
{
}
</pre>


                <p class="para">
                    Se estas operações fizerem com que o comprimento da linha exceda o <a href="coding-standard.php-file-formatting.html#coding-standard.php-file-formatting.max-line-length" class="link">comprimento
                        máximo</a>, quebre a linha antes das palavras-chave &quot;extends&quot; e/ou
                    &quot;implements&quot;, e indente tais linhas em mais um nível.
                </p>

                <pre class="programlisting brush: php">
class SampleClass
    extends FooAbstract
    implements BarInterface
{
}
</pre>


                <p class="para">
                    Se a classe implementa múltiplas interfaces e a declaração excede o comprimento
                    máximo da linha, quebre após cada interface separada por vírgula e indente os
                    nomes das interfaces de forma a ficarem alinhados.
                </p>

                <pre class="programlisting brush: php">
class SampleClass
    implements BarInterface,
               BazInterface
{
}
</pre>

            </div>

            <div class="section" id="coding-standard.coding-style.classes.member-variables"><div class="info"><h1 class="title">Variáveis membras de classes</h1></div>
                

                <p class="para">
                    Variáveis-membras devem ser nomeadas de acordo com as convenções de nomenclatura
                    de variáveis do Zend Framework.
                </p>

                <p class="para">
                    Quaisquer variáveis declaradas em uma classe devem ser listadas no topo da
                    classe, acima da declaração de quaisquer métodos.
                </p>

                <p class="para">
                    O construtor <em class="emphasis">var</em> não é permitido. Variáveis-membras devem
                    sempre declarar sua visibilidade usando um dos modificadores
                    <span class="property">private</span>, <span class="property">protected</span> ou
                    <span class="property">public</span>. Dar acesso direto a variáveis-membras declarando-as
                    como públicas é permitido mas desencorajado. Em vez disso, utilize métodos
                    acessores (set e get).
                </p>
            </div>
        </div>

        <div class="section" id="coding-standard.coding-style.functions-and-methods"><div class="info"><h1 class="title">Funções e métodos</h1></div>
            

            <div class="section" id="coding-standard.coding-style.functions-and-methods.declaration"><div class="info"><h1 class="title">Declaração de funções e métodos</h1></div>
                

                <p class="para">
                    Funções devem ser nomeadas de acordo com as convenções de nomenclatura do Zend
                    Framework.
                </p>

                <p class="para">
                    Métodos dentro de classes devem sempre declarar sua visibilidade usando um dos
                    modificadores <span class="property">private</span>, <span class="property">protected</span> ou
                    <span class="property">public</span>.
                </p>

                <p class="para">
                    Assim como ocorre com classes, a chave deve sempre ser escrita na linha abaixo
                    do nome da função. Espaços entre o nome da função e o parêntese de abertura para
                    os argumentos não são permitidos.
                </p>

                <p class="para">
                    Funções em escopo global são fortemente desencorajadas.
                </p>

                <p class="para">
                    A seguir, um exemplo de declaração aceitável de função em uma classe:
                </p>

                <pre class="programlisting brush: php">
/**
 * Bloco de documentação aqui
 */
class Foo
{
    /**
     * Bloco de documentação aqui
     */
    public function bar()
    {
        // todo conteúdo de função
        // deve ser identado quatro espaços
    }
}
</pre>


                <p class="para">
                    Quando a lista de argumentos exceder o <a href="coding-standard.php-file-formatting.html#coding-standard.php-file-formatting.max-line-length" class="link">comprimento
                        máximo de linha</a> você pode introduzir quebras de linha. Argumentos
                    adicionais à função/método devem ser identados um nível a mais que o da
                    declaração da função/método. Uma quebra de linha deve ser colocada antes do
                    parêntese de fechamento de argumentos, que deve então ser colocado na mesma
                    linha da chave de abertura da função/método com uma espaço separando os dois, e
                    no mesmo nível de identação da declaração da função/método. A seguir, um exemplo
                    de tal situação:
                </p>

                <pre class="programlisting brush: php">
/**
 * Bloco de documentação aqui
 */
class Foo
{
    /**
     * Bloco de documentação aqui
     */
    public function bar($arg1, $arg2, $arg3,
        $arg4, $arg5, $arg6
    ) {
        // todo conteúdo de função
        // deve ser identado quatro espaços
    }
}
</pre>


                <blockquote class="note"><p><b class="note">Note</b>: 
                    <p class="para">
                        O único mecanismo de passagem de parâmetro permitido em uma declaração de
                        método é a passagem por referência.
                    </p>
                </p></blockquote>

                <pre class="programlisting brush: php">
/**
 * Bloco de documentação aqui
 */
class Foo
{
    /**
     * Bloco de documentação aqui
     */
    public function bar(&amp;$baz)
    {}
}
</pre>


                <p class="para">
                    Passagem por referência em tempo de chamada é estritamente proibido.
                </p>

                <p class="para">
                    O valor de retorno não deve ser cercado por parênteses. Isto pode embaraçar a
                    legibilidade, além de quebrar o código caso um método seja modificado
                    posteriormente para retornar por referência.
                </p>

                <pre class="programlisting brush: php">
/**
 * Bloco de documentação aqui
 */
class Foo
{
    /**
     * ERRADO
     */
    public function bar()
    {
        return($this-&gt;bar);
    }

    /**
     * CERTO
     */
    public function bar()
    {
        return $this-&gt;bar;
    }
}
</pre>

            </div>

            <div class="section" id="coding-standard.coding-style.functions-and-methods.usage"><div class="info"><h1 class="title">Uso de funções e métodos</h1></div>
                

                <p class="para">
                    Argumentos de funções devem ser separados por um único espaço após a vírgula
                    delimitadora. A seguir, um exemplo de chamada aceitável de função que utiliza
                    três argumentos:
                </p>

                <pre class="programlisting brush: php">
threeArguments(1, 2, 3);
</pre>


                <p class="para">
                    Passagem por referência em tempo de chamada é estritamente proibido. Veja na
                    seção de declaração de funções a maneira apropriada de passar argumentos de
                    função por referência.
                </p>

                <p class="para">
                    Ao passar arrays como argumentos para uma função, a chamada da função pode
                    incluir a indicação &quot;array&quot; e pode ser quebrada em múltiplas linhas para
                    aumentar a legibilidade. Em tais casos, as instruções para a escrita de arrays
                    ainda se aplicam:
                </p>

                <pre class="programlisting brush: php">
threeArguments(array(1, 2, 3), 2, 3);

threeArguments(array(1, 2, 3, &#039;Zend&#039;, &#039;Studio&#039;,
                     $a, $b, $c,
                     56.44, $d, 500), 2, 3);

threeArguments(array(
    1, 2, 3, &#039;Zend&#039;, &#039;Studio&#039;,
    $a, $b, $c,
    56.44, $d, 500
), 2, 3);
</pre>

            </div>
        </div>

        <div class="section" id="coding-standard.coding-style.control-statements"><div class="info"><h1 class="title">Expressões de controle</h1></div>
            

            <div class="section" id="coding-standard.coding-style.control-statements.if-else-elseif"><div class="info"><h1 class="title">If/Else/Elseif</h1></div>
                

                <p class="para">
                    Expressões de controle baseadas nos construtores <em class="emphasis">if</em> e
                    <em class="emphasis">elseif</em> devem ter um único espaço antes do parêntese de
                    abertura do condicional e um único espaço depois do parêntese de fechamento.
                </p>

                <p class="para">
                    Dentro das expressões condicionais entre os parênteses, os operadores devem ser
                    separados por espaços para maior legibilidade. Parênteses aninhados são
                    encorajados a fim de melhorar o agrupamento lógico de expressões condicionais
                    maiores.
                </p>

                <p class="para">
                    A chave de abertura deve ser escrita na mesma linha da expressão condicional,
                    enquanto a chave de fechamento deve sempre ser escrita na sua própria linha.
                    Qualquer conteúdo dentro das chaves deve ser indentado utilizando quatro
                    espaços.
                </p>

                <pre class="programlisting brush: php">
if ($a != 2) {
    $a = 2;
}
</pre>


                <p class="para">
                    Se a expressão condicional fizer com que a linha exceda o <a href="coding-standard.php-file-formatting.html#coding-standard.php-file-formatting.max-line-length" class="link">comprimento
                        máximo</a> e possuir várias cláusulas você pode quebrar a condicional em
                    várias linhas. Em tais casos, quebre a linha antes de um operador lógico e
                    indente a linha de forma a ficar alinhada abaixo do primeiro caractere da
                    cláusula condicional. O parêntese de fechamento no condicional será então
                    colocado em uma linha junto à chave de abertura com um espaço separando os dois,
                    em um nível de indentação equivalente ao da expressão de controle de abertura.
                </p>

                <pre class="programlisting brush: php">
if (($a == $b)
    &amp;&amp; ($b == $c)
    || (Foo::CONST == $d)
) {
    $a = $d;
}
</pre>


                <p class="para">
                    A intenção deste último formato de declaração é prevenir problemas ao adicionar
                    ou remover cláusulas da condicional durante revisões posteriores.
                </p>

                <p class="para">
                    Para expressões &quot;if&quot; que incluem &quot;elseif&quot; ou &quot;else&quot;, as convenções de formatação
                    são similares às do construtor &quot;if&quot;. Os exemplos a seguir demonstram a
                    formatação apropriada para expressões &quot;if&quot; com construtores &quot;else&quot; e/ou
                    &quot;elseif&quot;:
                </p>

                <pre class="programlisting brush: php">
if ($a != 2) {
    $a = 2;
} else {
    $a = 7;
}

if ($a != 2) {
    $a = 2;
} elseif ($a == 3) {
    $a = 4;
} else {
    $a = 7;
}

if (($a == $b)
    &amp;&amp; ($b == $c)
    || (Foo::CONST == $d)
) {
    $a = $d;
} elseif (($a != $b)
          || ($b != $c)
) {
    $a = $c;
} else {
    $a = $b;
}
</pre>


                <p class="para">
                    O <acronym class="acronym">PHP</acronym> permite que expressões sejam escritas sem chaves em
                    algumas circunstâncias. Este padrão de codificação, no entando, não faz
                    diferenciação alguma -- todas expressões &quot;if&quot;, &quot;elseif&quot; ou &quot;else&quot; devem utilizar
                    chaves.
                </p>
            </div>

            <div class="section" id="coding-standards.coding-style.control-statements.switch"><div class="info"><h1 class="title">Switch</h1></div>
                

                <p class="para">
                    Expressões de controle escritas com a expressão &quot;switch&quot; devem ter um único
                    espaço antes do parêntese de abertura da expressão condicional e após o
                    parêntese de fechamento.
                </p>

                <p class="para">
                    Todo o conteúdo dentro da expressão &quot;switch&quot; deve ser indentado utilizando
                    quatro espaços e o conteúdo abaixo de cada expressão &quot;case&quot; deve ser indentado
                    utilizando quatro espaços adicionais.
                </p>

                <pre class="programlisting brush: php">
switch ($numPeople) {
    case 1:
        break;

    case 2:
        break;

    default:
        break;
}
</pre>


                <p class="para">
                    O construtor <span class="property">default</span> nunca deve ser omitido de uma
                    expressão <span class="property">switch</span>.
                </p>

                <blockquote class="note"><p><b class="note">Note</b>: 
                    <p class="para">
                        Em alguns casos é útil escrever uma expressão <span class="property">case</span> que
                        recai sobre a próxima omitindo um <span class="property">break</span> ou
                        <span class="property">return</span>. Para diferenciar tais casos de bugs, qualquer
                        expressão <span class="property">case</span> onde o <span class="property">break</span> ou o
                        <span class="property">return</span> sejam omitidos devem conter um comentário
                        indicando que a quebra foi intencionalmente omitida.
                    </p>
                </p></blockquote>
            </div>
        </div>

        <div class="section" id="coding-standards.inline-documentation"><div class="info"><h1 class="title">Documentação em linha de código</h1></div>
            

            <div class="section" id="coding-standards.inline-documentation.documentation-format"><div class="info"><h1 class="title">Formato de documentação</h1></div>
                

                <p class="para">
                    Todos blocos de documentação (&quot;docblocks&quot;) devem ser compatíveis com o formato
                    phpDocumentor. Descrever o formato phpDocumentor está além do escopo deste
                    documento. Para mais informações, visite: <a href="http://phpdoc.org/" class="link external">&raquo; http://phpdoc.org/</a>
                </p>

                <p class="para">
                    Todo arquivo de classe deve conter um docblock em nível de arquivo no topo de
                    cada arquivo e um docblock em nível de classe imediatamente acima da classe.
                    Exemplos de tais docblocks podem ser vistos abaixo.
                </p>
            </div>

            <div class="section" id="coding-standards.inline-documentation.files"><div class="info"><h1 class="title">Arquivos</h1></div>
                

                <p class="para">
                    Todo arquivo que contém código <acronym class="acronym">PHP</acronym> deve ter um docblock no
                    topo do arquivo contendo no mínimo estas tags do phpDocumentor:
                </p>

                <pre class="programlisting brush: php">
/**
 * Descrição resumida do arquivo
 *
 * Descrição longa do arquivo (se houver)...
 *
 * LICENÇA: Informação sobre licença
 *
 * @category   Zend
 * @package    Zend_Magic
 * @subpackage Wand
 * @copyright  Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license   BSD License
 * @version    $Id:$
 * @link       http://framework.zend.com/package/PackageName
 * @since      File available since Release 1.5.0
*/
</pre>


                <p class="para">
                    A anotação <span class="property">@category</span> deve ter o valor &quot;Zend&quot;.
                </p>

                <p class="para">
                    A anotação <span class="property">@package</span> deve ser utilizada e deve ser
                    equivalente ao nome do componente da classe contida no arquivo. Tipicamente, o
                    nome do componente possuirá apenas dois segmentos, o prefixo &quot;Zend&quot; e o nome do
                    componente.
                </p>

                <p class="para">
                    A anotação <span class="property">@subpackage</span> é opcional. Caso informada, deve ser
                    o nome do subcomponente menos o prefixo da classe. No exemplo acima, assume-se
                    que a classe no arquivo ou é &quot;<span class="classname">Zend_Magic_Wand</span>&quot; ou utiliza
                    tal nome de classe como parte de seu prefixo.
                </p>
            </div>

            <div class="section" id="coding-standards.inline-documentation.classes"><div class="info"><h1 class="title">Classes</h1></div>
                

                <p class="para">
                    Toda classe deve ter um docblock que contenha no mínimo estas tags do
                    phpDocumentor:
                </p>

                <pre class="programlisting brush: php">
/**
 * Descrição resumida da classe
 *
 * Descrição longa da classe (se houver)...
 *
 * @category   Zend
 * @package    Zend_Magic
 * @subpackage Wand
 * @copyright  Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license   BSD License
 * @version    Release: @package_version@
 * @link       http://framework.zend.com/package/PackageName
 * @since      Class available since Release 1.5.0
 * @deprecated Class deprecated in Release 2.0.0
 */
</pre>


                <p class="para">
                    A anotação <span class="property">@category</span> deve ter o valor &quot;Zend&quot;.
                </p>

                <p class="para">
                    A anotação <span class="property">@package</span> deve ser informada e deve ser
                    equivalente ao componente a que a classe pertence; tipicamente, terá apenas dois
                    segmentos: o prefixo &quot;Zend&quot; e o nome do componente.
                </p>

                <p class="para">
                    A anotação <span class="property">@subpackage</span> é opcional. Caso informada, deve ser
                    o nome do subcomponente menos o prefixo da classe. No exemplo acima, assume-se
                    que a classe descrita ou é &quot;<span class="classname">Zend_Magic_Wand</span>&quot; ou utiliza
                    este nome como parte do seu prefixo.
                </p>
            </div>

            <div class="section" id="coding-standards.inline-documentation.functions"><div class="info"><h1 class="title">Funções</h1></div>
                

                <p class="para">
                    Toda função, incluindo métodos de objetos, deve possuir um docblock que contenha
                    no mínimo:
                </p>

                <ul class="itemizedlist">
                    <li class="listitem"><p class="para">Uma descrição da função</p></li>
                    <li class="listitem"><p class="para">Todos os argumentos</p></li>
                    <li class="listitem"><p class="para">Todos os possíveis valores de retorno</p></li>
                </ul>

                <p class="para">
                    Não é necessário utilizar a tag &quot;@access&quot; já que o nível de acesso é conhecido
                    através do modificador &quot;public&quot;, &quot;private&quot; ou &quot;protected&quot; utilizado na
                    declaração.
                </p>

                <p class="para">
                    Se uma função ou método pode disparar uma exceção, utilize @throws para todas as
                    classes de exceção:
                </p>

                <pre class="programlisting brush: php">
@throws exceptionclass [description]
</pre>

            </div>
        </div>
    </div>
        <hr />

            <table width="100%">
                <tr>
                    <td width="25%" style="text-align: left;">
                    <a href="coding-standard.naming-conventions.html">Conven&ccedil;&otilde;es de Nomenclatura</a>
                    </td>

                    <td width="50%" style="text-align: center;">
                        <div class="up"><span class="up"><a href="coding-standard.html">Padr&atilde;o de Codifica&ccedil;&atilde;o do Zend Framework para PHP</a></span><br />
                        <span class="home"><a href="manual.html">Guia de Refer&ecirc;ncia do Programador</a></span></div>
                    </td>

                    <td width="25%" style="text-align: right;">
                        <div class="next" style="text-align: right; float: right;"><a href="doc-standard.html">Norma sobre a documenta&ccedil;&atilde;o do Zend Framework</a></div>
                    </td>
                </tr>
            </table>
</td>
        <td style="font-size: smaller;" width="15%"> <style type="text/css">
#leftbar {
	float: left;
	width: 186px;
	padding: 5px;
	font-size: smaller;
}
ul.toc {
	margin: 0px 5px 5px 5px;
	padding: 0px;
}
ul.toc li {
	font-size: 85%;
	margin: 1px 0 1px 1px;
	padding: 1px 0 1px 11px;
	list-style-type: none;
	background-repeat: no-repeat;
	background-position: center left;
}
ul.toc li.header {
	font-size: 115%;
	padding: 5px 0px 5px 11px;
	border-bottom: 1px solid #cccccc;
	margin-bottom: 5px;
}
ul.toc li.active {
	font-weight: bold;
}
ul.toc li a {
	text-decoration: none;
}
ul.toc li a:hover {
	text-decoration: underline;
}
</style>
 <ul class="toc">
  <li class="header home"><a href="manual.html">Guia de Refer&ecirc;ncia do Programador</a></li>
  <li class="header up"><a href="manual.html">Guia de Refer&ecirc;ncia do Programador</a></li>
  <li class="header up"><a href="coding-standard.html">Padr&atilde;o de Codifica&ccedil;&atilde;o do Zend Framework para PHP</a></li>
  <li><a href="coding-standard.overview.html">Vis&atilde;o geral</a></li>
  <li><a href="coding-standard.php-file-formatting.html">Formata&ccedil;&atilde;o de Arquivos PHP</a></li>
  <li><a href="coding-standard.naming-conventions.html">Conven&ccedil;&otilde;es de Nomenclatura</a></li>
  <li class="active"><a href="coding-standard.coding-style.html">Estilo de Codifica&ccedil;&atilde;o</a></li>
 </ul>
 </td>
    </tr>
</table>

<script type="text/javascript" src="../js/shCore.js"></script>
<script type="text/javascript" src="../js/shAutoloader.js"></script>
<script type="text/javascript" src="../js/main.js"></script>

</body>
</html>